This set of scripts are intended for the priors and flat versions of the PREMUP paradigm. We need to select below here which version to look at.

Compute individual performance indeces

# Initialize
strong_acc <- matrix(data=NA, nrow=40+100, ncol=max(exp.p$which_sub))
weak_acc <-  matrix(data=NA, nrow=40+35, ncol=max(exp.p$which_sub))
flat_acc <-  matrix(data=NA, nrow=40+30, ncol=max(exp.p$which_sub))
# temp <- NA
# Initialize plot
# par(mfrow=c(exp.p$nSubs/2,4), oma=c(0,0,0,0)) # Subplots
# Loop over subjects
for(cSub in exp.p$which_sub){
  
  # Get subject code
  sub_code <- paste("sub-", sprintf("%03d", cSub), sep="")

  # Get one subject's data
  sub_data <- subset(x = learning, subset = participant == cSub) # Data
  load(paste(cleaned_dir, "../../data/BIDS/", sub_code,"/", sub_code, "_params.RData", sep="")) # Parameters
  
  # Get cummulative accuracy split by scenes
  for (cScn in seq(1,6, by=2)){
    cumm_acc <- cumsum(sub_data$trial_acc_manual[sub_data$scn_cat==cScn])
    cumm_acc2 <- cumsum(sub_data$trial_acc_manual[sub_data$scn_cat==cScn+1])
    cumm_acc <- cumm_acc / c(1:length(cumm_acc)) # Cummulative accuracy
    cumm_acc2 <- cumm_acc2 / c(1:length(cumm_acc2)) # Cummulative accuracy
   
    # Get current scene's info
    curr_scn_cond <- unique(sub_data$scn_condition[sub_data$scn_cat==cScn])
    curr_scn_cond_label <- p$scn_cont[curr_scn_cond]
    
    # Store average perfromance
    if(curr_scn_cond_label==0.9){
      strong_acc[1:length(cumm_acc),cSub] <- rowMeans(cbind(cumm_acc, cumm_acc2))
    }else if(curr_scn_cond_label==0.7) {
      weak_acc[1:length(cumm_acc),cSub] <- rowMeans(cbind(cumm_acc, cumm_acc2))
    }else{
      flat_acc[1:length(cumm_acc),cSub] <- rowMeans(cbind(cumm_acc, cumm_acc2))
    }
    
    # Plot
    plot(cumm_acc, ylim = c(0,1), xlim = c(0,length(cumm_acc)),xaxt="n", col="pink",
         main = paste(curr_scn_cond_label, "contingency"))
    text(labels=sub_code, x=0, y=1.2, xpd=T)
    abline(h=.5, col = "red", lty = 2); abline(h=curr_scn_cond_label ,col = "green")
    abline(v=0, col = "black", lty = 4);abline(v=40, col = "black", lty = 4);
    xtick<-c(0,40)
    axis(side=1, at=xtick, labels = FALSE)
    text(x=xtick,  par("usr")[3],
    labels = c("Refresh", "Enc starts"), pos = 1, xpd = TRUE)
    points(seq(1, length(cumm_acc2)), cumm_acc2, col = "blue")
  }
}

Plot both tasks

par(mfrow=c(1,3)) # Subplots
prior_label=c("Strong prior", "Weak prior", "Flat prior")
p$scn_cont <-c(.9, .7, .5)
for(cCond in c(1:3)){
  if(cCond==1){
  ### Strong prior
  data_mean=rowMeans(strong_acc, na.rm = T)
  data_sd=rowSds(strong_acc, na.rm = T)
  ind=c(1:140, 140:1)
  }else if(cCond==2){
    data_mean=rowMeans(weak_acc, na.rm = T)
  data_sd=rowSds(weak_acc, na.rm = T)
  ind=c(1:75, 75:1)
  }else{
    data_mean=rowMeans(flat_acc, na.rm = T)
  data_sd=rowSds(flat_acc, na.rm = T)
  ind=c(1:70, 70:1)
  }

  # SD
xx <- data_mean+data_sd
yy <- data_mean-data_sd
  
  # Plot
plot(data_mean, ylim = c(0,1), xlim = c(0,length(data_mean)),xaxt="n", col="blue",
     main = prior_label[cCond])
polygon(x= ind, y = c((xx),rev(yy)), col = rgb(.5,.5,.8,.3), border = "red")

# Format
abline(h=max(p$scn_cont[cCond]) ,col = "green")
abline(h=.5, col = "red", lty = 2); 
abline(v=0, col = "black", lty = 4);abline(v=40, col = "black", lty = 4);
xtick<-c(0,40)
axis(side=1, at=xtick, labels = FALSE)
text(x=xtick,  par("usr")[3],
 labels = c("Refresh", "Encoding starts"), pos = 1, xpd = TRUE)
}

Compute performance only during encoding

# Get encoding data
learning <- encoding

# Initialize
strong_acc <- matrix(data=NA, nrow=100, ncol=max(exp.p$which_sub))
weak_acc <-  matrix(data=NA, nrow=35, ncol=max(exp.p$which_sub))
flat_acc <-  matrix(data=NA, nrow=30, ncol=max(exp.p$which_sub))
# temp <- NA
# Initialize plot
# par(mfrow=c(exp.p$nSubs/2,4), oma=c(0,0,0,0)) # Subplots
# Loop over subjects
for(cSub in exp.p$which_sub){
  
  # Get subject code
  sub_code <- paste("sub-", sprintf("%03d", cSub), sep="")

  # Get one subject's data
  sub_data <- subset(x = learning, subset = participant == cSub) # Data
  load(paste(cleaned_dir, "../../data/BIDS/", sub_code,"/", sub_code, "_params.RData", sep="")) # Parameters
  
  # Get cummulative accuracy split by scenes
  for (cScn in seq(1,6, by=2)){
    cumm_acc <- cumsum(sub_data$trial_acc_manual[sub_data$scn_cat==cScn])
    cumm_acc2 <- cumsum(sub_data$trial_acc_manual[sub_data$scn_cat==cScn+1])
    cumm_acc <- cumm_acc / c(1:length(cumm_acc)) # Cummulative accuracy
    cumm_acc2 <- cumm_acc2 / c(1:length(cumm_acc2)) # Cummulative accuracy
   
    # Get current scene's info
    curr_scn_cond <- unique(sub_data$scn_condition[sub_data$scn_cat==cScn])
    curr_scn_cond_label <- p$scn_cont[curr_scn_cond]
    
    # Store average perfromance
    if(curr_scn_cond_label==0.9){
      strong_acc[1:length(cumm_acc),cSub] <- rowMeans(cbind(cumm_acc, cumm_acc2))
    }else if(curr_scn_cond_label==0.7) {
      weak_acc[1:length(cumm_acc),cSub] <- rowMeans(cbind(cumm_acc, cumm_acc2))
    }else{
      flat_acc[1:length(cumm_acc),cSub] <- rowMeans(cbind(cumm_acc, cumm_acc2))
    }
  }
}

Plot encoding

par(mfrow=c(1,3)) # Subplots
prior_label=c("Strong prior", "Weak prior", "Flat prior")
p$scn_cont <-c(.9, .7, .5)
for(cCond in c(1:3)){
  if(cCond==1){
    ### Strong prior
    data_mean=rowMeans(strong_acc, na.rm = T)
    data_sd=rowSds(strong_acc, na.rm = T)
    ind=c(1:100, 100:1)
  }else if(cCond==2){
    data_mean=rowMeans(weak_acc, na.rm = T)
    data_sd=rowSds(weak_acc, na.rm = T)
    ind=c(1:35, 35:1)
  }else{
    data_mean=rowMeans(flat_acc, na.rm = T)
    data_sd=rowSds(flat_acc, na.rm = T)
    ind=c(1:30, 30:1)
  }

  # SD
xx <- data_mean+data_sd
yy <- data_mean-data_sd
  
  # Plot
plot(data_mean, ylim = c(0,1), xlim = c(0,length(data_mean)),xaxt="n", col="blue",
     main = prior_label[cCond])
polygon(x= ind, y = c((xx),rev(yy)), col = rgb(.5,.5,.8,.3), border = "red")

# Format
abline(h=max(p$scn_cont[cCond]) ,col = "green")
abline(h=.5, col = "red", lty = 2)
#abline(v=0, col = "black", lty = 4);abline(v=40, col = "black", lty = 4);
xtick<-c(0,40)
axis(side=1, at=xtick, labels = FALSE)
#text(x=xtick,  par("usr")[3]
#labels = c("Refresh", "Encoding starts"), pos = 1, xpd = TRUE)
}

Save cleaned data

#write.csv(learning_data, file = paste(output_dir, sub_code, "_task-learning_cleaned.csv", sep=""))
#write.csv(rating_data, file = paste(output_dir, sub_code, "_task-rating_cleaned.csv", sep=""))